<script setup lang="ts">
import {onMounted, ref} from "vue";
import {GetPcBaseInfo} from "../../../../wailsjs/go/view/IdpView";
import { idp} from "../../../../wailsjs/go/models.ts";
import { ElNotification} from "element-plus";


const pcBaseInfo = ref<idp.PcBaseInfo>()
const diskZeroSizeNum = ref(0)
onMounted(()=>{
  GetPcBaseInfo().then(res =>{
    pcBaseInfo.value = res
    res.Disk.forEach(it =>{
      if (it.size==0){
        diskZeroSizeNum.value =diskZeroSizeNum.value+1
      }
    })
  }).catch(e =>{
    ElNotification({
      title: '本地错误',
      message: "加载基础配置信息时发生错误:"+e,
      type: 'error',
    })
  })
})
const clickReloadBtn = ()=>{
  diskZeroSizeNum.value =0
  GetPcBaseInfo().then(res =>{
    pcBaseInfo.value = res
    res.Disk.forEach(it =>{
      if (it.size==0){
        diskZeroSizeNum.value =diskZeroSizeNum.value+1
      }
    })
  }).catch(e =>{
    ElNotification({
      title: '本地错误',
      message: "加载基础配置信息时发生错误:"+e,
      type: 'error',
    })
  })
}

</script>

<template>
  <div>
    <el-descriptions
      title="PC概述信息"
      :column="1"
      border
    >
      <template #extra>
        <el-button type="primary" @click="clickReloadBtn">刷新</el-button>
      </template>
      <el-descriptions-item>
        <template #label>
          <div class="cell-item">
            <el-icon >
              <user />
            </el-icon>
            主机名称
          </div>
        </template>
        {{ pcBaseInfo?.Sys.hostName }}
      </el-descriptions-item>
      <el-descriptions-item>
        <template #label>
          <div class="cell-item">
            <el-icon >
              <user />
            </el-icon>
            系统信息
          </div>
        </template>
        {{ pcBaseInfo?.Sys.osName }} ({{pcBaseInfo?.Sys.osVersion}})
      </el-descriptions-item>
      <el-descriptions-item>
        <template #label>
          <div class="cell-item">
            <el-icon >
              <user />
            </el-icon>
            架构内核
          </div>
        </template>
        {{ pcBaseInfo?.Sys.arch }} ({{pcBaseInfo?.Sys.kernel}})
      </el-descriptions-item>
      <el-descriptions-item>
        <template #label>
          <div class="cell-item">
            <el-icon >
              <user />
            </el-icon>
            产品型号
          </div>
        </template>
        制造商:【{{ pcBaseInfo?.Sys.vendor }}】
        <br>
        产品型号:【{{pcBaseInfo?.Sys.product}}】
        <br>
        系统序列号:【{{pcBaseInfo?.Sys.serial}}】
      </el-descriptions-item>
      <el-descriptions-item>
        <template #label>
          <div class="cell-item">
            <el-icon >
              <user />
            </el-icon>
            CPU信息
          </div>
        </template>
        基础信息:{{ pcBaseInfo?.Cpu.cpu }}
        <br>
        核心数:【{{pcBaseInfo?.Cpu.cpuCores}}】 ,主频:【{{pcBaseInfo?.Cpu.cpuMhz}}】
        <br>
        CPUID:【{{pcBaseInfo?.Cpu.cpuId }}】
        <br>
        生产商:【{{pcBaseInfo?.Cpu.manufacturer}}】
      </el-descriptions-item>
      <el-descriptions-item>
        <template #label>
          <div class="cell-item">
            <el-icon >
              <user />
            </el-icon>
            内存信息
          </div>
        </template>
        内存数量:{{pcBaseInfo?.Memory.length}}
        <br/>
        <div v-for="it in pcBaseInfo?.Memory" :key="it.serialNumber">
          <div  v-if="it.size>0">
            大小:【{{ it.size/1024/1024/1024 }}GB】,主频:【{{it.mhz}}】,序列号:【{{ it.serialNumber }}】,生产商:【{{it.manufacturer}}】
          </div>
        </div>
      </el-descriptions-item>
      <el-descriptions-item>
        <template #label>
          <div class="cell-item">
            <el-icon >
              <user />
            </el-icon>
            硬盘信息
          </div>
        </template>
        分区数量:{{pcBaseInfo?.Disk.length}},其中零容量的虚拟分区:{{diskZeroSizeNum}}个
        <br/>
        <div v-for="it in pcBaseInfo?.Disk" :key="it.serialNumber">
          <div v-if="it.size>1024*1024*1024">
            盘符:【{{it.deviceId}}】,大小:【{{ (it.size/1024/1024/1024).toFixed(1) }}GB】,空闲:【{{ ((it.size-it.used)/1024/1024/1024).toFixed(1) }}GB】,序列号:【{{ it.serialNumber }}】，文件系统格式:【{{it.fileSystem}}】
          </div>
        </div>
        物理序列号:{{pcBaseInfo?.DiskSerial}}
      </el-descriptions-item>
      <el-descriptions-item>
        <template #label>
          <div class="cell-item">
            <el-icon >
              <user />
            </el-icon>
            网络信息
          </div>
        </template>
        ip:【{{pcBaseInfo?.Network.ipv4}}】
        <br>
        mac:【{{pcBaseInfo?.Network.mac}}】
      </el-descriptions-item>
    </el-descriptions>
  </div>
</template>

<style scoped lang="scss">

</style>
